# -*- coding: utf-8 -*-
__author__ = 'lztkdr'
__date__ = '2020/4/9 15:03'

"""
	每行代表FilmTV.it上可用的电影，其原始标题，年份，类型，时长，国家/地区，导演，演员，平均票数和投票数。
	英文版本的国际电影联盟包含53,497部电影和12个属性，
	https://www.kaggle.com/stefanoleone992/filmtv-movies-dataset
	问题：
		1. 统计出 年份最多的电影个数，取前10个年份
		2. 统计出 最多的电影个数的10个国家
		3. 统计数 参演电影最多的10名演员


"""

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# Pycharm输出窗口有省略号，数据显示不全解决方法
pd.set_option('display.max_rows', 10)
pd.set_option('display.max_columns', 200)
pd.set_option('display.width', 1000)

# 如果要显示中文标题和坐标表示，需要添加以下两行代码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

print('============================================================================================================')

file_path = './filmtv_movies - ENG.csv'
df = pd.read_csv(file_path)

srs = df.groupby(by='year')['filmtv_id'].count().sort_values(ascending=False).head(10)

print(srs)

# 为了让 x 刻度按照 排序后的正常顺序 在 matplotlib 中显示，这里 把年份前面 加个 空格字符串
x = [' ' + str(int(year)) for year in srs.index]
y = srs.values

yticks = list(range(0, max(y)))[::50]

plt.figure(figsize=(20, 8), dpi=80)
plt.bar(x, y, color='orange', width=0.2)

plt.xticks(x, rotation=45)
plt.yticks(yticks)

plt.xlabel("年份")
plt.ylabel("电影数量")
plt.title("电影数量最多年份Top10")

plt.grid()
plt.show()
print('================================================')
plt.cla()

srs = df.groupby(by=df.country).count()['filmtv_id'].sort_values(ascending=False).head(10)
print(srs)

plt.figure(figsize=(20, 8), dpi=80)
plt.bar(srs.index, srs.values, color='orange', width=0.2)

plt.xticks(srs.index, rotation=45)

plt.xlabel("国家")
plt.ylabel("电影数量")
plt.title("电影数量最多的国家Top10")

plt.grid()
plt.show()
print('================================================')
plt.cla()

# split(',', expand=True)  1列展开为多列
# stack 所有列合并成1列
# to_frame 转为 DataFrame 类型
new_df = df.actors.str.split(',', expand=True).stack().to_frame()
# 重置索引
new_df.reset_index(drop=True, inplace=True)
# 重命名 列名，将列索引 0 赋值列名为 actors
new_df = new_df.rename(columns={0: 'actors'})
print(new_df)

